
#ifndef _SDK__SPLITTER__INCLUDED__
#define _SDK__SPLITTER__INCLUDED__

#include "Task.h"
#include "Utility/ErrorCode.h"
#include <vector>

namespace nebula { namespace sdk {


class ISplitStrategy
{
public:
	virtual ~ISplitStrategy() {}

public:
	virtual NEBULA_ERROR_CODE DoSplit(ITask* task) = 0;
};


class ISplitter
{
public:
	virtual ~ISplitter() {}

public:
	virtual NEBULA_ERROR_CODE Split(ITask* task, std::vector<ISplitStrategy*> &strategies) = 0;
};


}} //end of nebula::sdk

#endif // _SDK__SPLITTER__INCLUDED__

